<!-- Copyright 2014 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// -->
<!DOCTYPE html>
<title>Compatibility Tests</title>
<script src="../../../closure/base.js"></script>
<script src="test_js_deps-runfiles.js"></script>
<textarea id="InboundRsaEncryptOpenpgpjs0_7_2">
-----BEGIN PGP MESSAGE-----
Version: OpenPGP.js v0.7.2
Comment: http://openpgpjs.org

wcBMAyMlJx+Vv4ahAQf8CXpvMByJWLVwCvI3Ng4+OzDoQwByMebsrI6adKJp
glmvgZovYVryvNwKYRTjXaPmhjfEV1HeicNDPKdEauX5p2TCjExioW4sCxtR
YkAIqIxznesK+6fOvs3kFhlwkKRGkMPDBigIdX6n9yOg1fd9kZaj4ieS886c
wDV7OTwTizftwjAToiuCGYLI/urTTYhR34ilhX34BZanx89O2WXgPnUcnr97
X2pINGtOpCwrdq3xLsWW7UT5ezQhtSYVwDiN9IzPfZZtnczFLsQmYPPyK7ie
4ETOzTD+6NfbjkkhnD6ALU9mkYXtz4Okdik4+eOHxHsgOsehrxrt1yWN3iq6
B9JBAf0tB+echPkUTiQARrDQW8mo4rGDwMysNuzhL0ydCHekTd0xtxAHOaJP
QtApAcRrYGCNb8hkdBi66h8fxsEAEjo=
=ZEjt
-----END PGP MESSAGE-----
</textarea>
<!--
  InboundRsaEncryptPgp10_0_0_674 Tests for:
    3des.sha384.zlib.asc
    aes128.md5.zip.asc
    aes192.sha256.uncompressed.asc
    aes256.sha384.zip.asc
    cast5.sha512.uncompressed.asc
    idea.sha.zlib.asc
-->
<textarea id="InboundRsaEncryptPgp10_0_0_674">
-----BEGIN PGP MESSAGE-----
Version: PGP Command Line v10.0.0 (Build 674) (Linux)

qANQR1DBwEwDIyUnH5W/hqEBB/0euzvEFRGiWJNXD5vvDvasRBSgqv+6Ulghgdww
52gFFim/0euBkc9/5XhLvjutxktdVWwMMVW8SU198WqHhH+aJc55f6XJfqVxZKaa
89IpUb+V2StqZ1uOpJHZMVMQT1FL2QI/H3xtdBLmQ61jYOBH3sfHhDYfwqJjj8Eg
pIVoOcxVFGPkmtB32saaAaCmRzY3m3rfb81j5W8GvGKumug3tjFIREkWIPJhNZ0a
K9c6VqJ+fNOoHgJZa1+3Cm3nIPza8nHb8L/N4lfkBwNLJoUlDrbrJa20FH4GBIf/
FcjoNRLLLZTLwhUwFaXHBJN32HeJE95Un7JudN8ghJLik0Gv0kIBnEzhGrUL7fvA
3Zkx1Ab/M86vjEouV83F/UIDfLHcWB/fPtIyT9yykzEb+tT3UlMh+miR4iSbOy9o
pOZ9fVZh8gU=
=BIOC
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: PGP Command Line v10.0.0 (Build 674) (Linux)

qANQR1DBwEwDIyUnH5W/hqEBCAC4GnRNvJix0QjchqgbCU/PYbp3NtrmwlBu8Ivr
8g2g4R6v7fZtl3oAfG8s0e4NHtmoF9FzIf6LdBDDFdDq/jEqhMVOAQRmmOIIChp+
K598t5KP0FW9tP8iVyY8QCrTK8FObG6l8dgidcd4fCGIYJnFhvvlhbnH8mw2x1Bk
7Q0baaz30rOueQeaDVsUi71b6kT34C3vjH420goigVztPdSzijcUkPevui9l66LN
GHQ8dZg/q53jUeMg4cskrHX7BBeF1imNVioL/iXwlYT4vmwp9LZSUGrR2/IaZwNX
izz6Cv4EMOHzN4RF0yYvfKCGTFtH03zyo2y2uLWKH4WJ42MQ0kQBBGRVn+9ocHBT
RJ3msAqxkE+5+z5KObd5Lw+6qFG8PVsNmZqSCjSmZAmMYtAKXlgPJdGxVwDG8lDq
LXlDUuoyqGSclw==
=hr/o
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: PGP Command Line v10.0.0 (Build 674) (Linux)

qANQR1DBwEwDIyUnH5W/hqEBCACY8qhQaOP5NcbiUtPa7P9w9uSJQSwcp7yL7n64
Zo3yOKD4DedmT6a17L774t9UPsKlAMA5m2bkMfbq2gq0fqQVr+G0/c9/zaDRiD/3
bYAfe/MPNPmyf593U5AE7ClPhVWmzEhtEI+o/jP//FGlZY+XSa8M/3SkNzL1fc5B
pYb/78xliSddqkK7wcj/E+DChF8LvLZ2aCBucjptm2j7S+ocsYIC+AXhLjoAPSJU
k5mlTil4UfGmSnenpEsAlKaFnLIpUIWILgr5u3hbrTEm/mHgPvun/UKbrZ+buzQZ
UysmTH4zRIhtMoUHFUgSYSOmz8VmcJgS7BrUuhBgMGw4BL8c0kQBOoRezAmzbPzX
K0UI8ywc0yzslmnYrTx6yCIg9vgsUH9XzhpoWTLmxThnr7A7egJghCBMKdplYINf
udXT81/3oG5BUQ==
=rtaa
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: PGP Command Line v10.0.0 (Build 674) (Linux)

qANQR1DBwEwDIyUnH5W/hqEBCACVj2uKPfT9zAOjFUsH8OuV4bBaEFBaOQfrpHOJ
1cude4SYzz1V5+tYzYvNlCSBJ1ljLW5poKixSRhqa0vQZKfmY6H2oYeXVlY+8B9E
ZfTKStkhTxccAW2/0atL0USwmiq4/w8gIh9KRxZP44DkVzNMqM4PXUvsIuSTAzIO
MH4IN3jrt1nZgBmCWZi6BwcXkX9Rtb13GAU+WhqXgxP1WYYRr1OHfIkn4F5x4RXF
5G0qF8i17LNVFDqxRs2bClGNrSr0xhVM6pavplLpqUnOz3EWPZ1lu7wQZWf/qXJ0
QvXhtAo6ztQMlh33fl/frbcr/Jzg81V9UGwbo7OI0CCyb9440kQB9T0Rx6omEqty
Yp3qNnhwlrRs3lkYaMM+z/06rrzpn6ucZggQHD4ZCK8ZHYx/FSpYJ5li6jOOPfOc
Ub0u15hwyyBnFA==
=DuYZ
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: PGP Command Line v10.0.0 (Build 674) (Linux)

qANQR1DBwEwDIyUnH5W/hqEBCACifnnB4vb6x2bEmih4niw6G/Q2tAM/jKfun3F/
0AuJ7lR+RB6ZSPsM9i6m5vPkbwAJlWhc51BZ87SsAZtdgWOGDbuaBYzPQ3mlzJX/
AeiemNpBJr0yNEr0Tu/mPwtNnu8LVgntA9dscxvHKlBOSoMvs63sH0naVi0zhCbg
Ke0g9znjygnBXkc7IhWkvySn/82QSKVhilMNlzCgshCIF5L8HAysW13sb0YgNV+2
tbDw4+WQc6OJqobA6quloy71ncZCluf6GbIvEWGjpzWtf8U4T5vgUubt8z1g64Je
g3xgn5tXJEBLsclyOtR/TjPvQVgpufvzTcSt9pwSBz6wid0f0jwB2iXt+MDa7ASJ
EvDBgGcP1xahPQFPloCYhiN5+MTVF5CwAEpV9kL55ZlflanLNSfAJfDvygnle5Nw
l/A=
=5lk7
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: PGP Command Line v10.0.0 (Build 674) (Linux)

qANQR1DBwEwDIyUnH5W/hqEBB/96YWzT39JCpC71xHnmSYCSCM32QFvikS8wuxQO
9e618KtW7gfWaZxSQsNfykFMhfkkbQcp5I5Dg6L7C9kqrnAG7XPF11S2aYYHG5t1
dcgItN/YO1y8wCq6DZ7c4wh13wHhoZfAEWbxbXOcgWiKUNmnvq9W6I2VWYHsfBSj
x2qNnojH1SM8bX/EjPhUUx4WEKOhWFc7nezg7/8VOAfyGtJMUtNsIc9ekeRJNeCR
a4VPVtApssd3uDMPBiBgPtS6VuuHUlEUXOaUeGVL5vZzquIaE1MSSPTPWuAg3QEO
X0vO+iPdpDu5EHs5VoCZ/WMPWNa+WWY3C4db/gl9CBq6u2Wa0kIBMMqfuwSLW40a
bLGSgVzkPYbWvZhAPOwuH0VNTkbBBr3DHNSM6QGPyjHN2Q3sddrhiFt7A41wM8um
y/FL9GJQv3k=
=vm1f
-----END PGP MESSAGE-----
</textarea>
<!--
  InboundRsaEncryptGnupg2_1_0beta3 Tests for:
    3DES.SHA1.ZIP.asc
    AES192.SHA224.ZLIB.asc
    AES256.SHA256.Uncompressed.asc
    AES.SHA384.ZIP.asc
    AES.SHA512.ZLIB.asc
    BLOWFISH.MD5.Uncompressed.asc
    CAST5.SHA1.ZIP.asc
-->
<textarea id="InboundRsaEncryptGnupg2_1_0beta3">
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgAioSQeowOqYeUfhSa/J9KdmU8f1bqxeUS+vB931gl1YQL
SiZkMVkFcok+nZFA+9Q3MntdEvWLrFRaoOU79duEmt963yxjHh02i+9kvbac3CW2
JfljlyPIpPND7ksVDLLG5n7RKy7ZMG4K4WALWNq7GyVNLERCGGQ+qpfxjbWeWotq
rOdzKBgebPX/h3+Toif6R3lL1ST2V1ufKMOcxZljGQbl5+XCyw2TMazitno8Yf1b
cXH7ocshnjmvu/0zGpyqoDF4JJlVBXVAm9HSJWtWlSACpEKty2AU7SoiMIsiBpKk
OfYCawF49QOrkKUWcQkBLqwFQvsK+c1BAutXrwz+0tI1AY1m6E86TA2eTDQyUnEs
vYugiMUrXsyPDxD7IkHBvQJSKIQQcnLD7/nFAQupqV9FN5Qlqsw=
=4wN0
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/RASGVTt6Tx4uRtt21Jp1lVhCAbzmdUG4DDrewGYX2eNv
7O3/HaxpUheqRbXTMC+7K8f2AyT7THamD045k5CEio6np7ljllykVTURnZOS0BPH
vDFIeGtEL0CuSMQ1ufOrPtuQbIPzFOOFOHxl9h5Jz3C270cabiNNpJ2dfoGn9KSB
wM1aXig2IUFl4m0taVlumnKD/zLDf3HN5Fg51mHN1p0qfDkGTzoTNS375WcGp7oY
OWBF3f8Lx+tbVdjv8HkXi0Lt5T3Mw034rwMm9Dcya6bpFxxRgx6pW8GKM3jhtJGk
iylrsI+QvyzcpDM7lX1ABMvnDRaR3BPwy2P8AF0fVtJDARrbueS+awRsbNjC/wPg
4T4xFx5FPUhY0HhvvJ48VyRHdg3JuGNV0XwWtdp6yWxf7gXNapLjJ6VnXP9pV5xK
OuqE9A==
=18b+
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgAh4hqAX63u5p5D6PMmLAcjG4JcfRCtjyMrblDWIf42NA9
6WhlQ/md09fDcKi+Qef5tlkEsT1iaFRqmkT0pPdcNd+kSslJnkdAnx+AiJ4U0oio
ZiExHV8RHb7QWLBh6ay2WueFdp7KxxiE2/B5TabAplDLvW2VoJ5igW04sxFmEoOb
5LAWh3Ta6HC6lY85AwCi2YtryJoC8vBfrO6r0J0ZfrbvpKwz4D62MCqHxPuGxQQ0
JxqqqtAkUbYEbWnGQY7h6TccsFq0F5pAnTb+3oJUahmXZ4DS/YPgtz/Ij3SK3Vng
FY6wozOCH/nmNOM9OQz8mvxIMFv7oTy+CeShhhV+GdI5AVKVBVV/txHvVM97jnxN
GGC/Xrpj5CPzLNqwtbwTTghXMdGZt1AZ80TMqYd5IBc/eAz7SmyYQ780
=iLqg
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/exxa+hPFbs872czGJVw5RShD28CGnCQX/hcbyGHRdn5t
GJLSjOGbYMzr2ZwcvVFBDr1pGfZsG4p8xHGkWzNIZ0xpuUn6kQxM9ki1aZDYJPe3
9kuRV3HTESlbFCPacJKpV9zxIZiYVJftAFVebhH8TaZeE+M/yu71KQ4kAJhu4Mwq
6DHKp367OcZNWpT36NcNxQ79Nl6Q8MOfsVRcuB4giPPjI6Cec4I/0LUc/qpzc2ue
2LhH4s+0BjfFlOosaLCvxMGAxAoLDyT2tcv1FvC7NJFXqs4oXt6aUlPrcCM0aTol
Kd1PSBVCDF8l/Y0mjnwii80i1dA7xybfG1YKj+xrmdI9AboPBtw+yPhLdxNHFChh
+zE79rClZUwNz8sI9J7Svu/e1T3D16sJ7+R/DNLVaaIQ7oMewyFQTxydfLCjtA==
=1EaC
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf+L5OwbR66JZCDa43ND/yOV/axC0xKz+83opLnkD9ZNqqx
CSuCV/i5oQvGxGuXdIhJstdnW43Xdx6Zh15wB0DWGE1U8niED1I5mpW5bqeku1zn
nINP00jStbatUn1y3sHd1yU7HZ9iQV6A0dCaMmFmfWqj4LU1kvH1p3Rf0N82YoRR
9KCLJUtnfLX3bTdP5gL0gy/rksibtD2UiG+uLs45ZtvFnHjOG+PyggMxDMzDQqe+
+/Gax2v8XY9gPASat3BvesBQUFh0EJSULRicV0i7v8XtNxA/GFDiTd9Tr0Ra8tkw
ryYjxxqb7BjF1ZfVF5cFtFIq3K7Ym/5s23COd9zS7tJDAcAyyeKu+lKgkAVORlMA
ByH1p+AAGIJfMvEaEDidYxyRctC4mUDz8HWuIyvKLqJ2itzg/OU4WZNm0qytfoZl
FNkJhg==
=5hVa
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf+IQnDeQTlrrc64ooTWAzxphdHX0cRsZ/CkoofZe5RuFLg
Nm91JECfi0ogc2Fn6nkYgh4/fEcIpzAZ0hreh2owEyWhPOpW1+eUQ9Z87nfoI12+
/6bcdsaHrDz76/itCsQWDYIr7Rz0VWsaKbKAVRgycDu0Tp0pc4wm5C4b+rjjyw3V
TPu8m6nyBFK8pawZmtn2XKOV9gKE7ytOcoyPRY9NhmNb3bRu/uDvSS/Cn651D64Z
p0VPSbqXoWa4+VrbqWUcFcU1zFRvPrMecLUmzGBRSF9jmfiK0y+DRzw6NDr0ehEd
OLbi2tuCH7BLDoQaXuz+BHN2UF79zYZeMJOKRMlYatIxAQORnNlYkObTD+Lahrue
MbUJ7DVzLG5gk2bbfO28/KrTkigGMYGGzRxUDV9e5bzQfA==
=EeP3
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.1.0beta3 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/U4UWPUHhVW02FFgUHPDHhtXPbP/fe29yTTK1GQsTyvjk
4E7esdZJh/r5b45RenR95BKjx1MOAX5FscuBv5M2b0B376NTVGYI+UjRf6WGlpQs
62w8CwH5+Z64nfaaomA5ut5kEGXM6LEKin8b1s9iYslIsf2mZulza/+9ryd/3doN
RsjaRE0mrzE7+6+jaTNs54yuQLYSmkzcSYhVBPlfk+5GJwVoIwmfV44YqS/MSypp
+HsIY7nU2eAyAxfO2+20QrebrTpkxLXUWrBEMSKRMwtjsyHOjfhAhr4CYlBkUQRg
0aCt9TA2GZJP7aaLOKk9JFVSi2+H91Pz3md+W6H969I1AXWYpTD7ielMKCIdclVJ
8wbuLapIId+P0cwH1mL+ixkjdr7hM0H8GrHOKtYG6OkAyWIce+0=
=H6oC
-----END PGP MESSAGE-----
</textarea>
<!--
  InboundRsaEncryptGnupg1_4_11 Tests for:
    3DES.SHA512.ZLIB.asc
    AES192.SHA384.ZIP.asc
    AES256.SHA256.Uncompressed.asc
    AES.SHA224.ZLIB.asc
    BLOWFISH.SHA1.ZIP.asc
    CAST5.MD5.Uncompressed.asc
-->
<textarea id="InboundRsaEncryptGnupg1_4_11">
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgAqbwswoFj74SdQZNLE/yUDV2tmNBmMgBIwSVTg3Rn0hUT
pFsxeEs/uM7GIurwXeiqja5dZAHaLIqCEnH+E1D1+CHB6ndqYnvro/hfk1AnT2gS
SjTmUEsYPgIMSX3rKCtZS/pb9JxvrhodNePZogAvgNE4lwu6zqNmEe8yKGs5wFiL
TtDw/XD29e/3NSrWHd0TKyERNuM3TR0K7zjJcSFAV2VGoXdXcZEgZXUzCqnAOboi
G/KTgPS4p0Gm81Yt3mEMl/XcW3x7dcFbK7uT4rZQVVWukYgQHMSFY4boJcA+UwuS
Fp9e2d/DoYWDlkde43+QJ4/FNAMGwzn5I5LfTyhoG9I7AUmTdjb70bfOyHk8d8oG
4o4zSSr+f3ix2PN3q3Hcp/5UDJx8PR2EqbwByLm1bAx01RZGoBtYDhZdu3I=
=ME+d
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/bRV1Hn0enCwM7oTy9381kSTC/PKATJH4za6uJsReTWo3
tQNizwBF0oa5ZEq36OSB3oOcmqmdF5asUCXX1/hR5/kxqnTrhMs4hqrgXj+rQkCf
ecrp/LMceiVCHcgav7j4eLF2YABE+ABAHmyyi7uiZJVV/Y8EkCL7bh98ypUxXCVW
Tl3BJuOdw0nhdIh7JjAghrQeikrSKoTgsQCVMBfosDqXepdMfCIZ2kt80g6ELVXs
fKILr5DXGz6ueqVvxIjBbdAeP21+tBNq5qMMFnCooQGq4F+rABfDKbDrAF4EugVN
VV2taK4FwW4ye1qZ0zc3B8wMQYopLyPQGJ3oQguWhNI9AYpP5cj2aR0D7qZ64v4X
Qi8oEg3FpLI936JxT46ukkSeMD35Nvc6JZkjpmF93b9bqDfIHEJNvJl1B90yGA==
=PSpi
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/Rz9MUT6vO5CMuA5TpXeHWHvOI5BKyYWK62dLAFFMwA+5
BmT9SvD6zno0qcXc9RcyshfifLl7RJ5WFRw7qCqTNSUORTCs3SzBonz6GBl6Q22y
ej4A1I3NHaE04P9MS7rqgTIR5A4Bsl8ddBXwkzIisfL8Tln95V5KWbFCSrAPQW6y
tQkVWRsW3Evgit3ncZaZuCfQRnyHKgTISmgxi5c6CFKuDOKjqXH+vNeeJXB8UJwk
srD1WG65xfz3jF/1bS93dVSFvap8/IBmbc8yJD25kG+nzvIwy5lguO0Hnbmybu7Y
Rac3C6KTtmDhF/mMlMjEezHUUdKBURbqFM/QnJSmB9I5AdlXZyhC0lbn2sAVNq4L
zdjmaEazJ+6JKx7Wqkh3i0RrWrik86Iy46o6Ou9lCTrqb/eBA1JOZfK6
=JUD+
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/bPA19e14IKz1IPKk8yZ2EcB88XOGhJmoxsHDxB3e9dCf
ZHo6dnX0zLwxZO4q4oIGjVBQRwD4LoMmFIZM11xLBEufvUth+jxVZofHT0aI4sBT
zYnB+VOT8rAXeoZpCh3Ytgy/zSQ04DuYtCL1sKA+fnwiIRtosbQEh5ybGvoGBjuM
9hzQ390NGnaTkTfSPFE+qhdkCFWtt0ptZ0JmInBX/eU1gftEydU96wWLGJn9HzPr
byI9IWOMI3d5eVxCHHDlqgHiSLYdEMHZZQ8e01AUAIQt7PkE8gywOGfpkCP00Zcx
PNtES/u/qg3YmAMa7JCsMlu+sU6l076Tb8HV8RnSCNJDAaIemQkcjpyB4cqYLP4W
knwSdO5eZmAVZCXSd4FlvA6zmIel7dTeu8QEht3D+492+1b4xuS2sapDWsctdTAZ
ZK0eBg==
=v6ko
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgApvhFQD1nK7fhjNLTtyZnXKqdhBfj/X8Jfy+qe3sVjwcM
HB0VqpJz2fQ92QcMA9c4teg/p72JTldxow1iaiJgGYUW4mGeXX1IvnV04jO1NaZL
/ZECPjcgmtjUePzyS/tWZ+am9ag0iY/Q1G4PqlgtWxI3XWGKk/fDcUp7suopNTD3
9xADS//cC4OMq14Pgd5LN9LYyoj51fCEN671Yz3//DfRUqlpKM05apPE1u8wHF3b
svNOjIXN3eqa4RxZFzP8xcGeIcERw+aWH/zi5ffmHIMgd5huiKfO70mmXZLQPj3l
SbHL3Gq5B4ryzBV6zUu8LOrv/YUGUik8h3lFEaZqwdI1AfrZ3VQNN30G/VE+iJxT
2KFIFVt4ktH5eYJ4a49f0KXNyWBKkBrhj0QfSBbqBrClyS+dcjY=
=TXu/
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/T4OLPgmLU6T+PCT3NEUuIGO1/Sww+2c6qsx1cLMCe5p1
U8fgja4qAZc0b9Nao4qxLzJajoQL5dEH66lhrFNcPYoi3iug2766MD5ZklQH1wzC
gM6ZmwzgxnG+QAHrktB7h9SfmxTBf51Sf0BuxBhmWdOO4BTbfhkXHEZXlHw/k6hm
AycJO1G2B8WKh5J935mqOHQPzOpmDCUGX5hWm6rjwQciSjGnhXqp2paLa/FIKTm4
dv+5TGINdW2KEi59IiJVmF79SoDg71bg6socRLPOBETY5Xg3s76Y6TSUKZL79Zky
CUy+vJlOE13cX5h3pl1dK2BMhgpy3zrDCF7I8AfIPNIxAUuy0u4ywgh0/bIzsoNr
n0SnSiGPKK39YtzHg3hajfFUJu093VKahZbClIOmuxQtfA==
=Ir/t
-----END PGP MESSAGE-----
</textarea>
<!--
  InboundRsaEncryptGnupg2_0_17 Tests for:
    3DES.MD5.Uncompressed.asc
    AES192.SHA1.ZIP.asc
    AES256.SHA224.ZLIB.asc
    AES.SHA384.Uncompressed.asc
    BLOWFISH.SHA512.ZIP.asc
    CAST5.MD5.ZLIB.asc
-->
<textarea id="InboundRsaEncryptGnupg2_0_17">
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.17 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf+NaZdd6Rs3YAYrNyqmtr2ZspCrIZPZYbIR02ObLOXC0SF
Z8NON7OaI8DsHAfyDwqukzb6JwS8Vzg5lE2O27bvXIR1IpWucz5uqFdHpxqUgf0P
6hOESH+pL4yS+NU5TzDf7HFby+8srLjfC4Ppml4WVD9EjzyVNpTJNTwg1k8XLDmx
sp3ttUNHb2sxKK52ovCxDdSgd/GS43dZ2MxZPS+o5IdxdKsVGSu3wqo3HILWDRYC
cbToWgIT2McwdaS97nLVINUAkLsMx6alSn6Rc05x7omct6Iuwd9zIZH/f2wwzaj1
YozrQOXFht0G8t84Tzf+4dHtsLG0xHVb08M0RUKXrdIxAXOZwQ8QCnqeW388p8xs
EimOf/a7yVnK/EJpqSzbjM9aS1jQC28xdNK7M9jwPRKBbA==
=R3Gm
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.17 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgAk4hSlSX6O4FdZlVo4gbrpmMUhiySST2bbvipt+WbBZo5
A8VadC3JUjdsAYhRl5ieQkounqBkPycPsDgwnDzB8hStJEHtx0wuR4UMVoI0bzJZ
hzGktEQqfmc7tnGkyFTHPfvG2L9/odiFJavkC7Z4ih3+aGUdhWXeaGswoODzFT3n
LKuKXvMOXnFww1NUOWnfpZVEpNNIsboRdxKxKnytkpxOzTWAMNOnfdviaFzHfKR2
tA4sLinkkYAj2QcsiaRZv8NVLF2sF4gVb4aAjkxMSqQbgcuBVigNj4AOcCxbV6Zq
ZycZTRQRzpqlIvA3bmCBHPz++mozL5nCwDPCXxay9tI9ARJTesk2kucgKGwz7Sa4
RUA8C3Fif7l8/lnx8FualFRBD4GqrMo0x6SOEJiKHjVa70VAnd5wvFwVIubEAg==
=z+1Z
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.17 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf+OWfXfgVqDuqlLgcx+4zqO9BHblmkykaBELnXgDHThMqo
rmDwk9aFLceCcfzAgnBKZJ1bv814hlxgfMlCSzIJATmJ9eu5qneJdCrZAgh7MUGD
UjUVX/B7Z8zGl6CjYbc3RQF3Lr1ARy9xL0hiani5+5O+XVqq5+MTWS/NJgW19fEw
uHXdIWPHCXlThQi+gOSWWGMG5mlGdaFebmHTIEoG9Ve6XVX1cWgW7k+f07MIKHJW
HrGsbivCChrGk8ziucGIE+DxxQVEu/gS4epCotzs51arcwQ61UaN+ExVS39TJ0af
AD6YIN4pXJ/am04zhPYxi4vu4PZDl4xjvgzfLWMEqNJDAUmzTD8zEWvO0C0nyYKT
ibDD/eVmi3kxVlEeXrrtk5RaeMdWmwyFUjrL7sSW6oDyYQRlJzkJgoRECUmsg+7B
VFZTZw==
=9i8p
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.17 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgAspD3RYFI8wumXMDRLTwvVdyMZYoRM6KAX1zy1X2h52kA
k3Xl/BVIIkQgwKtv5Nsz/0sragK6Q+ay25BDPwgMqGaiGWE/nTrU82GvJ9jcqESO
5EFtxlaD1H5KMb4NqFESxiE4I2A3gWMph8Byw7ZJmMvfxgDf9efSLVqTAqOI7AQl
t93myZP7h+olJ2PxSGjgiK3xLGrz7sv+hPwz+fw0t2Dyd36yWFSIQ4lTMHWpxDdB
BhvHEZBnldJCDUzqZq6HyDpyhCj3SdFkBWd46vmlJtf07E0fiDz2V7LCKNIbcREw
B+df36xTXSIwgH0VwW3pFkflYcOwJ7ARCbY4KJ4I/9I5AdBflhX42hMrgVv7unAl
C8vACYa9mRkZf0nCv/nhXGvznxt7V3Q4vGF4Kh2knr2mjRA/EFJRxUvI
=bX7G
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.17 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/Z9VvqOX3nMVC78YlsuHR+ZTh4Qx8RBq/6hcw+DtCwfLK
ssjmj0XemXwC3Tdzbdx6/AXsrUWT2VJ/3AlHyf7Vo2NnKx/WIBygfBd5FgsjR7ZY
ltAnufQLMj7m5/a/uxT2amcEhCGR2ba6MdMp5oWpbigpZO8RiuhHSl8vg0eeu0Ms
U9JSu7mBv6rOE2E7gi6yNflXAZmTT1DNNsbg3Ta5glMkBTG2Zh4/+gzd4IU3E1KT
KG+6dJoC3CUI3qSJHkbX3jrEn6VTdXffhmQ51QphwOpUrlIMGVeKlaYySleC1jeU
ZIxOHkO1cUOvJXEsrI3ECKgqtU/mwBhkDqOEdLP+T9I1AUJ8x86q5rJV4CDxAEh6
4nxinSZSV+4N+/odyACTq/px2qo3IovfDI6da10dBohYydzuEdE=
=69PI
-----END PGP MESSAGE-----
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.17 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQf/Xp7JthwgYyc9fpuyoOU8STN2fUyfuYxaiSi3yVmGNMXP
IDs99IgOwwcIzRigj855t+Lx9lkvP2M0pmhtpA2PZ7CQAfcQ8OVV6t2zj9Yzlysd
FFvfalUdARGJiKasG5f3pUvcXYvrU3n9+Xjo8LxGC5QP/u3s5K/7qFsoMalpH1rE
ey3p/pVnLSInbILqQnvg94Ps9wQ7PBwl0Li/1YgLsFN1QXRpzjkc+9XpBzY9J6uE
E3ZfH2Bm27rpHsS+PaFTKnMS4bRRLANSCyXH06u2CBGYMKgiRYqHVIro0vZ70t8M
8o4L2rD9TZct6fHBHSP8gF9Uhi3GW2nT4G44IHC8YNI7AcR2cl3mu6b1VUMGhRZL
XqK648IMIjf8Ic0omn1m3jkr/SdCDVSTtqZH7SXblLtIPQ0MiIYON8esv3A=
=DBjN
-----END PGP MESSAGE-----
</textarea>
<textarea id="InboundRsaSignGnupg1_4_11">
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

jA0EAwMCfczlcZZg7tRgycCNi57omz2PSEMp7NQvYkq1A9wwb78bXIU02SmGgo+j
H15ogS7m7Qk6uwi8MXqXQ3u4GgizmvdXAlQ/WGeg65owRyCqpVE7f0XmXpFBmIf4
dqsZZGJAMpsoHHl4dOo+lKRuVmS9KmWNnG8zPdLD4Pz8URdLxJCtNZHxlaP6M7BV
TzlH4hFEDJmfL1UTrXYQ/0NX1atKEvMd9qH4c/HPZUuD8uj39jZ4m4Geu1hsS1SN
LqEOCYb57DQrd/sg/kFH/gosRgYNAtlYHZwHaFsXSW0ORuRm3ODE8fjT+SlDth1g
hiDQojQ9sM8RRwdHEP2eNNuBZui8UfIqbvPZ7cH9TfeCfnAk6S3C8jWkSwvP/mqe
uISafsJDIfOVLDBZ+a1GQTPdTXvXBPO4iL00V4VgZXzSMvyLxuV2FJe8IneIl/uT
3YUiEg3rFgUqeUALwWh8
=DGn3
-----END PGP MESSAGE-----

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEMAyMlJx+Vv4ahAQgAkOXalhkAxJ0M8kEiS4reFdvvd+eAsScZRaTnQsrVXmXZ
5+F9B3w30jfFTUWML62Co7DplC/qvzYD7fqczXyWHzneSI3hmU4Pc9gZhdKeROdj
SjV98twa7WqN1wrFQlGl/0OpyYXN+wd32F+YAL4xajFiQOINA/59Jc1ZCRtLWkfm
NGWuceK+eon7egNyRnLIzFDC9REHjL+QxhylqVHE6yOaTFK0uATWqHYv9bVDWJ8J
pKG7cxDZGGCPnq9DFmIyoFoD7NdeV/0PLcjKlAntXB6VsIVtg8xeKBu7/HIJ2sM1
4c7DlXcMd8pmHinRV1zVWIi/cHk2U+OTalfVAH/gVNLAsgFy/JaWdjYcDhi9mqdh
AzMa2i3Lp4kuBZeER8zbLFBR6tv3o+0qplAb0KZ2zmgydjAj6/Rk1kpeyJpUFeyd
GHqU4sg8j8S4OrnaTEwzWhoXSKWjErj3yshqLv4pMPGcKjqmFFl3HA1rnOInzEmx
ANB86fQOcU2oQOB85Q1XJO59trNVifNWz7VhWc2y3Gh3ZSwN56NctVCtr/4NdXMQ
9MPHDbvreCMQ6XR04sgK1OIGtQJTCW0rOtXa11tB4QVTblxxA/rBorMRqg6q1Hbv
RuEgx6MYPYGMTh9uUeht0t8kLOfa3wePlscwBGlxBdDFVscBCZe85cChe3DjhmTE
BH4IQdNSVZoyMryL2+5RThNCiDPnsA8A8gdiodWxOQb5qMlWg+o3JRLQbZ8iEzYI
gp+XUjD/wKHDrGQM0JzTX7aKyTU+zePnQPj8cWYVMeBUKgEuUHin3vhnF4JjCow7
RBTtuV4RUjFr6VfKXCL986s8jEw=
=yXHx
-----END PGP MESSAGE-----
</textarea>
<!--
  InboundPlaintextGnupg1_4_11 Tests for:
    https://code.google.com/p/end-to-end/issues/detail?id=7
-->
<textarea id="InboundPlaintextGnupg1_4_11">
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

owEBOwLE/ZANAwAIAUIGW1QB70MdAcsLYgBTjlghdGVzdAqJAhwEAAEIAAYFAlOO
WCEACgkQQgZbVAHvQx2GvBAAysBVNufueZW0ixqqQk7BbJy7/enrOpMH4ttaZMhm
7rkxG0PgFVUokuV+8gyijRXxg/nMhoz8M9pOyYBhpFyMVEUZSSRWGkt9Xg3cQJB2
jd6JojZopPQHPPOd/6pSByrFZEkvDvciDUCdlvt/Uxr6o9oYHNglzuX5jilJ7l+y
mNIa3l4Okr2DdJu8wOpqhah/Gev3T51GVkpxligYtk/mJm4pswsBOTlcOwQEqg6u
2xTuFU3q8BizH/oTGuT0mmSJbSy9d64nYhwPjQBpUz9fsTK8+MaPy0aAQ3jIOtmj
IZs6G0w20vLVzAkKI3brP/68oZ7Im4IRWqzHWG3wAkUrnmHDMlJyoviz7LmI2AVg
XZ5t3aq88oCJMIyMuu55qIxqsDwhlcpGE7nbVjvj62rODKhMp3FNPNjH234wS7iN
TNlxDKXDTHb34gxJ5QFesZ3+OfsTUvS5KtV/bizB+UBTnswWRDNBmwJyT2zvOqc2
TPhlfBzdobSKAbJ13aTC55SrADy1VMIPzam5mnX9tfhWvsf2ARBzsOSSCiYjE4xk
e7DRT5v9vaJKrXBReClUq1/9D0ZR0KdDV0bWfCplV18ecOzhL6PUFgHX6SlHjlOV
qvYGYiuG8xLR8S4ncS0MBaI3jcL/oUTsQ+43oP3+8Go7C3N/j7pIV6J7urnzKwIz
zdc=
=T2iD
-----END PGP MESSAGE-----
</textarea>
<!--
  InboundKeyGnuPg1_UserAttribute Tests for:
    https://code.google.com/p/end-to-end/issues/detail?id=33
-->
<textarea id="InboundKeyGnuPg1_UserAttribute">
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQINBFOR5PUBEAClTPqRQvt1JlMiBVsR91D0mvN7ZMZ62DDtdEPWwgR3sEku6QkO
TLiwwsXUnoff9ayAGxqq2zGe7p09KbJb2apjSxJsDl2k5mtBTp293l3qDjjFv+fl
9/259MGx857Ykt1OCHOg32b/Rv2SNtKRwnbOafuXL17yR0a2eUoPcOBpRme53lc1
MzDHMnM8xtXyTNdyxcfVvbd9wKW26dPuA3IUZ3jNphRJduMwZvxXv7UV7zl7OqiC
wL3gLRn3oy33sRlcsPMubnRVrBmfpDQ1Xw+kMjDlI36abg/2rVshtNiSxvw4QniL
pIsCDuhe3RNc/ygIeA6DS12UzCwrX6dHFnoggUWJ1/Aw7p+KZpc3vbBj5rC4irD9
dFTAP2lnih3ZlELP0L9iC8W2iWzW4rUf3s9Ux+Y2jBHHDzAkROydWhfOqstKmsPD
fbNHj4+wSmefCVejaX6NkBUgCJJ8dRs0Fgxy51fvyFBT3YZziTH9NRzxNCZuQ279
ZKFLNYaQQBCAgoR/f1IVYo5/ZlE4Ca4PZupz0B9f2WUULNt4YCdtTCD69xbECuBj
LTsYATdDjLlSVzJ2BwOPs7gvdlVujdGGt3wvUbC/3XVS8WjyxOuQhE/cBc8jmldp
AiWQM5l4OtNzaJHtuHdFoRgOBHQVJjhARcLeA8RjxDsn1at//W0OzMwknwARAQAB
tCVqb2huIGRvZSAodGVzdCkgPGpvaG5kb2VAZXhhbXBsZS5jb20+iQI4BBMBAgAi
BQJTkeT1AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBMBzrgyERcDHxj
D/0VtU/KEX8bHcB6BZclEEtqdhL4iUh2dOuLIs/rlYBwlxuSfjWPXciuIg0Z3dM4
bLsvJafLjS0RawXFd86ohqD8tUMmcOwm31Yc/+HpE3IYrn/4HA9fLje139lrF4yH
xzB1fyWzv/rNk+aTMboGFJG/ivIVgKzdya+O972Vdzu4Ahopm5YB2Sh2pLTwKhgb
dnCgXzlUwZ5ddx9DYYQO7U6Gn5lX4Wkn1vwLRpgxieXIxsmJCEk60v9WLOD2f7By
I/FSPF+NgcTQutVtV3FGxoXmNfoSCY8wDX54wAzC1SA+0AMoAQby75P4CR34T2Hg
3ANLcL0Vb/By65OyZVpl6vUFy5eJo/eV3yaurhxx/oyD2jBp/RAoItedAuItszE0
nA9K9v9362ShbpcHv2aS7M5l41VzM2q57V3dNkEuyeocP50MlSKoRs0l8dRdcEjK
hVPizS5Ff+uYIZX6qYprPlaCThb2q279fJbxFatQgBm7RpgYWE6YxVgjQYnruSF0
Vuv+aF553hIH+/oT40Qz+yKngzfwn/jXwqtuK1HaR+A7P9sqSiK0+6Aytp0364I9
uy2PE78o4Q4Bb3xuUniItfMoUZwHGylg2idW4YiXHPMdZCgU9vcpU5WaHlF1A70f
JpLahVJxFZ1+pH7C0c20VrOakgxMDkCN8025SW9Vxrn1GtHD18PVARAAAQEAAAAA
AAAAAAAAAAD/2P/gABBKRklGAAEBAQEsASwAAP/hAIBFeGlmAABNTQAqAAAACAAE
ARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAh2kABAAAAAEAAABO
AAAAAAAAASwAAAABAAABLAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA8KAD
AAQAAAABAAAAtwAAAAD/2wBDAKBueIx4ZKCMgoy0qqC+8P//8Nzc8P//////////
////////////////////////////////////////////////2wBDAaq0tPDS8P//
////////////////////////////////////////////////////////////////
////////////wAARCAC3APADASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAA
AAECAwT/xAAkEAEBAAIBAgcBAQEAAAAAAAAAAQIREiExAyIyQVFScTNhE//EABcB
AQEBAQAAAAAAAAAAAAAAAAABAgP/xAAZEQEBAQEBAQAAAAAAAAAAAAAAEQESIQL/
2gAMAwEAAhEDEQA/AOYDSAAAAAAAAAAAAAAAAAAAAAAC4zldLjjb1nsltt2BZq2I
uOVxu4uWNx7+4MgAAAAAAAAAAAAAAAAAAAAAAAAAst7b1suOrqdUWWy7gLMd3Vuk
tt73Zbu7qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoIKIRBUUAABTSEQXSdfab
ADWX1prL60pANZfWmsvrSkA1l9aay+tKQDWXxQABQAAAAAAABrUVrjF05V1rA2FK
wmo6WbTjCjGoajfGHGFPGRsKVzy6R08OSYy+9Z8T0VvD0Y/jWes6omlaC3QF6TYE
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
YUBHrkkYH+e9
=4JBj
-----END PGP PUBLIC KEY BLOCK-----
</textarea>
<!--
 Tests for clearsign message signature verification of a multiline message.
 RSA.SHA1
 RSA.SHA224
 RSA.SHA256
 RSA.SHA384
 RSA.SHA512
-->
<textarea id="InboundClearSignKey">
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org

mI0EUcy6DgEEAJb0T7gQlfKQWmR0dLUrueRMVy8UemcmxsdIH30/HqJvqO6xU0lK
NaFtaVxBdenAMpEooi1EcTi/bOKfz36FY/FARTiXv1LXuLzFJdPyjTYjh7tw+uOP
UlLJCTZikgrnM07txTUiVVEetOa+unyKn17EX0PlSpAbGZedyO0nGwXzABEBAAG0
BnRlc3QgNIi4BBMBAgAiBQJRzLoOAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX
gAAKCRAG/5ysCS2oCL2SA/9EV9j3T/TM3VRD0NvNySHodcxCP1BF0zm/M84I/WHQ
sGKmHStfCqqEGruB8E6NHQMJwNp1TzcswuxE0wiTJiXKe3w3+GZhPHdW5zcgiMKK
YLn80Tk6fUMx1zVZtXlSBYCN5Op/axjQRyb+fGnXOhmboqQodYaWS7qhJWQJilH6
iriNBFHMug4BBADDTMshHtyYhLmWC7793FlOFl5tkcEfdFKJRm30k/9yky4cuz//
Xe4uXM72SaTI1Dfi6UIz5ZuFTxw3bnAXav+SV4Q4dZo0hb4jU8YaQfDL4TsRp7uO
6iqxd8nlsh9JnBKE6Fk/CW5FoMZZ3/yEm3pq924Uv2AZlO6dafgXecyqNQARAQAB
iJ8EGAECAAkFAlHMug4CGwwACgkQBv+crAktqAhENwQAkMY/nds36KgzwfMPpxtB
aq8GbrUqY1r8lBl6a/bi8qeOuEgQmIxM2OpVPtL04c1c1hLflPCi1SQUlCIh3DkE
GQIcy0/wxUZdCvZK0mF5nZSq6tez3CwqbeOA4nBOLwbxho50VqxBpR4qypYrB2ip
ykxlwiqudEe0sE2b1KwNtVw=
=nHBL
-----END PGP PUBLIC KEY BLOCK-----
</textarea>
<textarea id="InboundClearSignMultilineMsg">

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQECAAYFAlOhmh0ACgkQBv+crAktqAiymgP+PwNJlaUOKNiV1iEEY6ynI8zl
23ideUpaew9ge/TVBOeZ5zebeNUxia47eHceNqiwm/Ok8hsUTI/VZqMw1XS4hzzx
Cd/cy2cDVZjr0qgEznFOrLs+ZW4LIbqvM1bXDINlEUqT8SNxmki2f7fZn5dCk6wf
c/fNYM0lQ/mOOio+LH4=
=4fNm
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA224


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQELAAYFAlOhmkcACgkQBv+crAktqAjMdgP+OXT6q9bPuL28q/R8HrhR1zLs
42i/PBaczIqsUctO8qUHF1RjxPe5EFAl8cjexqYl/iYJHl1dcWfNDWrfArrrBWwK
cUSZIW64nbVNleQKSK//eu0kUT+XPJhnv+UKy5HPGopx5s1JllZBY1EBDoV+WNbI
Fo1AIch7SAk+6kpAgeo=
=+J/g
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQEIAAYFAlOhmjQACgkQBv+crAktqAiSvQP9FroiMJUCmKyof/RhA6ZQIgKR
bEoop7BH8OIEV5mGCjR8eVhnA4b8AK545K+y0xdU22+oHSQrjqxasX4+CZJC9zTk
rQCTAqQ3S8dktC/iwnF5WeAkteGQ8i2gp1f/CSXGtgpkcd7PxA5ZJ4mvkRcTTJhj
8iNJXvk+GN/s3dPW+Nw=
=fYTy
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA384


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQEJAAYFAlOhmnkACgkQBv+crAktqAhYgwP+KpgdtDp6OSc+0fm1mfai01QV
LJu5KMP3R99PgETsq6pgNs8yfd9ZcCVPLQ3sYMIpscdAzs/v/rOOXueuN/1mib4S
MO8oX9kmdycP6TG2vPojUkz3t8ME7qm3ZcUPVg78GqTSHVXyMkikYq54qbiSw/LX
c+13Cr/S65qhrQLKhrA=
=5xCH
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQEKAAYFAlOhmfwACgkQBv+crAktqAghvQP+KqA6w5I/JpraPue1gN6caX+h
YDLouvaYZL4AVL4X0Y+pr6YuwUDhxDBhvhdUvoVqUe0TVtLeyawQf1FxR9140x2y
YZupZEFU+XsgCtxGNGRGRBLJqgcwWja4PvBspfYZQS1siQPPzq5VmO2+vwJCBpWb
MUebelYkRp89UkuLECA=
=bZ59
-----END PGP SIGNATURE-----

</textarea>
<!--
 Tests for clearsign message signature verification of a multiline message with
 unsupported algorithms.
 RSA.RIPEPD160
 RSA.MD5
-->
<textarea id="InboundClearSignKeyUnsupportedAlgo">
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQEDAAYFAlOhmuUACgkQBv+crAktqAgSYQP+LVVVu+AQGoJ74y/DjqscmV9E
MO4+Ixwhmy3Cc+TmBWgsJteRYVydk/gUgeh9mKoGS8VL+8mFv/VMAyUwloX33mS/
Fa0Gn9F1WPmvumJnYt/ibgqrPGw315scw6EKUccAH5SSEU7DixNL07nOPQVIuaxU
hvKLuDFPZvWKuWNj55A=
=wHxW
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: MD5


multiline
- --minus prepended
message
with lines padding

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iJwEAQEBAAYFAlOhmygACgkQBv+crAktqAgeawQAi3KbfMivbp4W3DM7F05v66gj
+gwt81TIKplNOJZh7fsLV4c/MPbxPGLSEg1Juqz4mgcJuBunS7NF78orkMByqtvD
t1/Wn5HW1AL35+aRXgkIyT/l4Gob2J2IlDwYOGUOq7W1lApK/dnFagTN5RAnbGxi
ySRHe67+rnOFmGEkxZE=
=HASW
-----END PGP SIGNATURE-----

</textarea>
<!--
 Tests for clearsign message signature verification of a one line message.
 RSA.SHA512
-->
<textarea id="InboundClearSignOnelineMsg">
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

test oneline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org

iJwEAQEKAAYFAlOgoEUACgkQBv+crAktqAgX1gP/e1q6wCTIJvyQDrs8tdDxJ8JS
rvkOjrdW88DIF48V8ho457JPNoFKzs4lD0XaRb0WvRNV3dMKlbv+aFTbudfWK8zr
R+Hf53lY7kk8qPhIa3jXFGOK6HwYHYXuIPP/FFoB0x83TmqMetxWRZI9elglObq8
UOmPAQP8h8OVluq3C7U=
=4bNh
-----END PGP SIGNATURE-----
</textarea>
<!--
  InboundKeyGnuPg1_DummyS2k:
  Test for keys exported with --export-secret-subkeys
  gnu-dummy S2K, algo: 3, SHA1 protection, hash: 2
-->
<textarea id="InboundKeyGnuPg1_DummyS2k">
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

lQGqBFOMvH0RBADh/AeQ4Bod62WW2pLdBHf4spl3cIIuI+N1RowhtjjHchn/IUWH
v5U3bn3/WgtkxlCczyJkAkyZd0RihEG27S6rTCGRIROobIMkEiCjjoD3gIETh73S
ZSjaVPi6DZmLj59evOmQttuFRrWdFjioK+GHkH0++M3Z6SSl44RGAFG63wCgjka8
KaN2QVol4YiZsrsQGM0Dfw8D/iLyzJ8xOPVL6MpPbAlil19DanotBardRItq0dNB
VVWPZnOSqJsQPrsJ8ucHpP6bglTw8JWcotC/td4ZCwTsItsBRpQO4ww0DOxsB1J1
mUFuljvELDREKY+hktssA0kgI99pR7fxoBqH9jT9J0+nIkrshHzzi63sUB6dD79W
Du5hA/0Vt5IBzCR+slpDOQdgTYjP8zlc7zaBdx00nqqWwaESvpLlrWTsKHEy9Aos
UjUEzteJaTeVjWhePxML+BYw0NQGlhegJyaJ5DjkR123DjMzzqhDKf9nyTsz0hC/
eedaY8xA9+dPQ7HARw3ctFwt1GU3ruHgBYzteIlsKhND+Jvr0/4DZQJHTlUBtBtk
c2Fkc2EgPGRzYWRzYUBleGFtcGxlLmNvbT6IYgQTEQIAIgUCU4y8fQIbAwYLCQgH
AwIGFQgCCQoLBBYCAwECHgECF4AACgkQqk68WrT5VLLcJgCgjQa04buMNNWrSlCF
xjooQCelAVEAnjocTLHS3qNdN1FhrXZ3TSGzP0a7nQFYBFOMvH0QBADbPhobFxoU
wBmlU78ayj+1STMGqlOYLkEuDxhhnB9lRdaPiojaxd5rDbhMiM/wECcIgcr8xva8
WYhj3ltNQav3l2/3nZvU1luAUoEqkHC/ysNnAaQXlLhhmYHngHghRJnu+IuiRZR4
LCQas1L1+EwH4797C8dxAFB1YVBj3epBewADBQP8DEiLjdFF8ODCh9g7QL0w8Q3l
6stuQvGMGcF5IFaLsCr7Qyr4zmN+DcrainlCxYDO1YrWbFtNpRT1w6e2svb7Nh62
OfvnMO2hJ4npLOI1+PUsp1bQasdpJBLtR9C4SkSzAbpDqZujM5IdryWJ/WxnaXd6
MG2AuCVrtgdxVrHe+pz+AwMC0849ONfn6/Bgv9+9V5JBrCcZURzrJjIC+D9itak0
6K2wW4s5/JR6UFVOtbUg/ZY6t+sBghVvdnETgiVUehdDir1Ro8HCavOISQQYEQIA
CQUCU4y8fQIbDAAKCRCqTrxatPlUsg+iAJ9FmhN3L7OEvgp1eFsNZqB6eIKyHwCf
eBWY3NDypeD5aoV6x2db2M3X5Ro=
=aQLB
-----END PGP PRIVATE KEY BLOCK-----
</textarea>
<!--
Test for https://code.google.com/p/end-to-end/issues/detail?id=60
GnuPG places subkey revocation signature packet right after subkey
packet.
-->
<textarea id="InboundKeyGnuPg1_RevocationRightAfterSubKey">
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=80Vy
-----END PGP PUBLIC KEY BLOCK-----
</textarea>
<script>
  goog.require('goog.async.DeferredList');
  goog.require('goog.testing.AsyncTestCase');
  goog.require('goog.testing.jsunit');
  goog.require('e2e');
  goog.require('e2e.openpgp.ContextImpl');
</script>
<script>
  var RSA_PRIVATE_KEY =
  '-----BEGIN PGP PRIVATE KEY BLOCK-----\n' +
  'Version: GnuPG v1.4.11 (GNU/Linux)\n' +
  '\n' +
  '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\n' +
  '/+yGzcqh\n' +
  '=no9X\n' +
  '-----END PGP PRIVATE KEY BLOCK-----';

  var RSA_PUBLIC_KEY =
  '-----BEGIN PGP PUBLIC KEY BLOCK-----\n' +
  'Version: GnuPG v1.4.11 (GNU/Linux)\n' +
  '\n' +
  'mQENBFKFJ5kBCADgTy3vZ27fhfiFDUSsCx5ldIHwE1GbuZCm+WIhCH3ni2CL0lKY\n' +
  'AUNFWRcxeODlQlvYA2ti+JALWjzlUYTpf02g3LfzBSIqdDn3JBwN6U12A0xwwSRs\n' +
  'KSRp8phn9yCyCTO7btbqZtGc29jrX/k6cbrBE8ln/9wlZVx8KVcpzDI4jhXjUwmM\n' +
  'JYvJqCHXRTe3kEGZkONfAeeIBfvs7t7Y/sv80RuXnlwMVMjEZKGRFlNQ5zqr8QQb\n' +
  'qh9MA7NeezIi890cQzii/+w6ta7X4/BnML4iud/aNiLYhpeZwEFqXHMwp+w8xHkk\n' +
  'YharW9Kgng6Vw7UE10SxeUqCjaLnlSf82Z5TABEBAAG0RVJTQVJTQSBLRVkgKFJT\n' +
  'QS9SU0Ega2V5IGdlbmVyYXRlZCBieSBncGcpIDxyc2Fyc2FAcGdwa2V5LmV4YW1w\n' +
  'bGUuY29tPokBOAQTAQIAIgUCUoUnmQIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC\n' +
  'F4AACgkQj2UmmMMwpyqPWgf+Jc4DzCCxf3S1M7zM49y7VNne9H2Fy2TCyvidhlXd\n' +
  'OpI4dNKjIyUmYQZTLEWcWpnxcK5YcypxDrFX69s0F5s8cd9CN2gIRglHSHpay8oj\n' +
  '2NTJ8DS05pmUyeKlG429zah0n1OtHsCOq/E/ibDmDLUsN2/ECh6ZNxpVIig5+sin\n' +
  'JpP5n2j1vO3QbGs2pggaY5CWjayN2MyjIaIWyPrq/H08LPJPV41rFdU9Dur7/Eby\n' +
  'cclQ6yM2fg8D+wzK2gH4zvxSIpegD7vA5+GN2RYP3iYVx7i+DK8PQdTBe/qL2WDa\n' +
  'Kpy7DyhL5P4WNwPo51GHP5TBNvL1z0IzqyfcVuZtRVZ64LkBDQRShSeZAQgAuR/p\n' +
  'QU1Laihb2ladg6ymg+Crs5ap3cdjeW+vPQ8E4uVi3oZXfpfpHLYTY6EchVMJKU9g\n' +
  'oZFn/z2vb67h5/vSARIXFTU5ccwzegW6lG+zPcY+QxpmkjMiLlpDN7cMu9oJE44+\n' +
  'I3KFhUQkkEPGB5BznnsCCr10Cwe1Tf6LDs/BvrXBPoi4/ex329yFU5hbp5OWzylJ\n' +
  'Ak4hcPVMiYe0YFNb4VHUGwfwWqlgHuHfKWfbN6E7F0EaZosGZALGt981iNA+P1uQ\n' +
  '1rzm0dMaqKwRh2IAPeCDeiIBkbFgoae8eE/4f32xpV+8J0nUYZCKZjhxZYbAJfDx\n' +
  '1SY0HZ6ex3MKscVgBwARAQABiQEfBBgBAgAJBQJShSeZAhsMAAoJEI9lJpjDMKcq\n' +
  'MfcH/As1jLNy+H62LG/kgXL4i4mhjouI4Og54FKZsvcmJHM/2JX3TsYhU0PAJ4MB\n' +
  'fHyNZ9BUiuFpsQupERQ9nOxkMUL5nm4xn5dBVa4ZumUcnr/kIib5gFhs6nHt5LUo\n' +
  '1XeiCW7bt0ac7hOTECox+ZM5YabBO+cXLfdCUQp7vDh4xfxjnX7+fviLvY32nboX\n' +
  'rxA+hcluYFJdl87kTatUir6vA7I7KBtlwnj2dRaM1BiFmXmbj6eHnBZ5YxCh1yfq\n' +
  'mcR6P4l2NfaqJ5k4olWcWTLmjlwNMsWRL26zFRcpbpmle1F5rCx0CS0XXAHLJmIe\n' +
  '6LOU9E37DV4E77Ali8P/7IbNyqE=\n' +
  '=A9tz\n' +
  '-----END PGP PUBLIC KEY BLOCK-----\n';

  var context, asyncTest = goog.testing.AsyncTestCase.createAndInstall(document.title);

  function setUp() {
    localStorage.clear();
    context = new e2e.openpgp.ContextImpl();
    context.setKeyRingPassphrase('');
  }

  function runTestFor(version, assertionsCb, regexp) {
    var msgs = document.getElementById(version).value;
    var encryptedMsgs = msgs.match(regexp);
    var results = goog.array.map(
      encryptedMsgs,
      function(msg, index) {
        var deferred = context.verifyDecrypt(function(_, cb) {  cb('a')}, msg);
        deferred.addCallback(function(vd) {
          return vd;
        }).addErrback(function(e) {
          fail("Failure at message " + index+ ": " + e);
        });
        return deferred;
      });
    // Let us wait 3 seconds per message.
    asyncTest.stepTimeout = encryptedMsgs.length * 2e3;
    asyncTest.waitForAsync('Waiting for decryptions.');
    var deferred = goog.async.DeferredList.gatherResults(results);
    deferred.addCallback(goog.bind(assertionsCb, this, encryptedMsgs));
  }

  function testInboundRsa() {
    context.importKey(function(uid, cb) {
      cb('test');
    }, RSA_PRIVATE_KEY);

    var assertDecrypts = function(encryptedMsgs, all, opt_plaintext) {
      var plaintext = e2e.stringToByteArray(opt_plaintext || 'susheep\n');
      goog.array.forEach(all, function(r) {
        assertArrayEquals(plaintext, r.decrypt.data);
      });
      assertEquals(encryptedMsgs.length, all.length);
      assert(all.length > 0);
      asyncTest.continueTesting();
    };
    var assertDecryptsCr = function(encryptedMsgs, all) {
      assertDecrypts(encryptedMsgs, all, 'susheep\r\n');  // \r added by openpgpjs.
    };
    var msgRegex = /-----BEGIN[\s\S]*?END PGP MESSAGE-----/g;
    runTestFor('InboundRsaEncryptGnupg1_4_11', assertDecrypts, msgRegex);
    runTestFor('InboundRsaEncryptGnupg2_0_17', assertDecrypts, msgRegex);
    runTestFor('InboundRsaEncryptGnupg2_1_0beta3', assertDecrypts, msgRegex);
    runTestFor('InboundRsaEncryptPgp10_0_0_674', assertDecrypts, msgRegex);
    runTestFor('InboundRsaEncryptOpenpgpjs0_7_2', assertDecryptsCr, msgRegex);
  }

  function testInboundPlaintext() {
    var assertPlaintext = function(input, all) {
      var plaintext = e2e.stringToByteArray('test\n');
      goog.array.forEach(all, function(r) {
        assertArrayEquals(plaintext, r.decrypt.data);
      });
      assertEquals(input.length, all.length);
      assert(all.length > 0);
      asyncTest.continueTesting();
    };
    var msgRegex = /-----BEGIN[\s\S]*?END PGP MESSAGE-----/g;
    runTestFor('InboundPlaintextGnupg1_4_11', assertPlaintext, msgRegex);
  }

  function testInboundRsaSign() {
    context.importKey(function(uid, cb) {
      cb('test');
    }, RSA_PRIVATE_KEY);
    context.importKey(function(uid, cb) {
      fail("Should not call callback");
    }, RSA_PUBLIC_KEY);

    var assertCorrectlySigned = function(encryptedMsgs, all) {
      goog.array.forEach(all, function(r) {
        var plaintext = e2e.stringToByteArray('signed');
        assertArrayEquals(plaintext, r.decrypt.data);
        assertEquals(1, r.verify.success.length);
        assertEquals(0, r.verify.failure.length);
        asyncTest.continueTesting();
      });
    }
    var msgRegex = /-----BEGIN[\s\S]*?END PGP MESSAGE-----/g;
    runTestFor('InboundRsaSignGnupg1_4_11', assertCorrectlySigned, msgRegex);
  }

  function testInboundInterwinedUserAttributeAndUserId() {
    var key = document.getElementById('InboundKeyGnuPg1_UserAttribute').value;
    asyncTest.waitForAsync('Waiting for import.');
    context.importKey(function(uid, cb) {
      fail("Should not call callback");
    }, key).addCallback(function(importedUids) {
        assertEquals(importedUids.length, 2);
        asyncTest.continueTesting();
    });
  }

  function testInboundDummyS2k() {
    var key = document.getElementById('InboundKeyGnuPg1_DummyS2k').value;
    asyncTest.waitForAsync('Waiting for import.');
    context.importKey(function(uid, cb) {
      cb('a')
    }, key).addCallback(function(_) {
        fail('should not import the key');
    }).addErrback(function (e) {
        assertTrue(e instanceof e2e.openpgp.error.UnsupportedError);
        asyncTest.continueTesting();
    });
  }

  function testInboundClearsignOneline() {
    var key = document.getElementById('InboundClearSignKey').value;
    var msg = document.getElementById('InboundClearSignOnelineMsg').value;
    asyncTest.waitForAsync('Waiting for import.');
    context.importKey(function(uid, cb) {
      fail("Should not call callback");
    }, key).addCallback(function(importedUids) {
        assertEquals(importedUids.length, 1);
        asyncTest.waitForAsync('Waiting for decrypt.');
        context.verifyDecrypt(function(_, cb) {  cb('test')}, msg).addCallback(
          function(vd) {
            assertEquals('test oneline', goog.crypt.byteArrayToString(
                vd.decrypt.data));
            assertEquals(0, vd.verify.failure.length);
            assertEquals(1, vd.verify.success.length);
            asyncTest.continueTesting();
        }).addErrback(function(e) {
            fail(e);
        });
    }).addErrback(function(e) {
        fail(e);
    });
  }

  function testInboundClearsignMultiline() {
    var key = document.getElementById('InboundClearSignKey').value;
    asyncTest.waitForAsync('Waiting for import.');
    context.importKey(function(uid, cb) {
      fail("Should not call callback");
    }, key).addCallback(function(importedUids) {

        var assertCorrectlySigned = function(clearsignedMsgs, all) {
          goog.array.forEach(all, function(r) {
            assertContains('\r\nmultiline', goog.crypt.byteArrayToString(
                r.decrypt.data));
            assertContains('\r\n--minus prepended', goog.crypt.byteArrayToString(
                r.decrypt.data));
            assertEquals(0, r.verify.failure.length);
            assertEquals(1, r.verify.success.length);
            asyncTest.continueTesting();
          });
        };
        assertEquals(importedUids.length, 1);
        var msgRegex = /-----BEGIN[\s\S]*?END PGP SIGNATURE-----/g;
        runTestFor('InboundClearSignMultilineMsg', assertCorrectlySigned,
            msgRegex);

    }).addErrback(function(e) {
        fail(e);
    });
  }

  function testInboundClearsignUnsupportedHashAlgo() {
    var key = document.getElementById('InboundClearSignKey').value;
    var msgs = document.getElementById('InboundClearSignKeyUnsupportedAlgo').value;
    asyncTest.waitForAsync('Waiting for import.');
    context.importKey(function(uid, cb) {
      fail("Should not call callback");
    }, key).addCallback(function(importedUids) {
      assertEquals(importedUids.length, 1);
      var msgRegex = /-----BEGIN[\s\S]*?END PGP SIGNATURE-----/g;
      var signedMessages = msgs.match(msgRegex);
      goog.array.forEach(signedMessages, function(msg, index) {
      context.verifyDecrypt(function(_, cb) { cb('test')}, msg)
          .addCallback(function() {
            fail("Should fail at message #" + index);
          }).addErrback(function(e) {
            assertTrue(e instanceof e2e.openpgp.error.UnsupportedError);
            asyncTest.continueTesting();
          });
      });
    }).addErrback(function(e) {
        fail(e);
    });
  }

  function testInboundSubkeyRevocationPacketRightAfterSubkey() {
    var key = document.getElementById(
        'InboundKeyGnuPg1_RevocationRightAfterSubKey').value;
    asyncTest.waitForAsync('Waiting for import.');
    context.importKey(function(uid, cb) {
      fail("Should not call callback");
    }, key).addCallback(function(importedUids) {
        assertArrayEquals(['revoked <revoked@revoked.net>'], importedUids);
        asyncTest.continueTesting();
    });
  }
</script>
